10000 - Longest Paths (Grafos, BFS, Dijkstra)
[andmenj-acm.git] / 10035 - Primary Arithmetic / p10035.~dpr
blob9c7c9464ea18d703a1a2b85ebe29f346ff06c0e8
1 program p10035(input, output);\r
2 \r
3 {$APPTYPE CONSOLE}\r
4 \r
5 function StrToInt(const S: string): Integer;\r
6 var\r
7   E: Integer;\r
8 begin\r
9   Val(S, Result, E);\r
10 end;\r
12 var\r
13   a, b: Array[0..9] of byte; //Arreglo de 10 posiciones puesto que los numeros tienen a lo sumo 9 digitos\r
14   sa, sb : string; //a y b leidos como string\r
15   la, lb : byte; //Longitud de a y de b\r
16   i, temp, carries : integer;\r
18 procedure leer();\r
19 var\r
20   entrada : string;\r
21 begin\r
22   readLn(entrada);\r
23   sa := copy(entrada, 1, pos(' ', entrada) - 1);\r
24   delete(entrada, 1, pos(' ', entrada));\r
25   sb := entrada;\r
26   la := length(sa);\r
27   lb := length(sb);\r
28 end;\r
30 procedure escribir();\r
31 begin\r
32   case carries of\r
33     0: writeLn('No carry operation.');\r
34     1: writeLn('1 carry operation.');\r
35     else\r
36       begin\r
37       write(carries); writeLn(' carry operations.');\r
38       end;\r
39     end;\r
40 end;\r
42 begin\r
43   reset(input, 'input.txt');\r
44   reset(output, 'output.txt');\r
45   leer();\r
46   while (sa <> '0') or (sb <> '0') do //Mientras alguno de los dos sea diferente de 0\r
47     begin\r
48     fillChar(a, sizeof(a), 0); //lleno a y b de ceros\r
49     fillChar(b, sizeof(a), 0);\r
50     carries := 0;\r
51     //convierto el numero a que està representado como una string a un arreglo de 10 posiciones.\r
52     //Por ejemplo, el nùmero 12345 quedarìa guardado en a como {0, 0, 0, 0, 0, 1, 2, 3, 4, 5}\r
53     for i := la downto 1 do\r
54       begin\r
55         a[9 -(la-i)] := StrToInt(sa[i]);\r
56       end;\r
57     for i := lb downto 1 do\r
58       begin\r
59         b[9 -(lb-i)] := StrToInt(sb[i]);\r
60       end;\r
62     //sumo cada posicion de a con cada posicion de b, empezando desde la derecha\r
63     for i := 10 downto 1 do\r
64       begin\r
65       temp := a[i] + b[i];\r
66       if (temp >= 10) then //si es mayor que 10 entonces "llevo" 1 a la proxima posicion a la izquierda (i - 1)\r
67         begin\r
68         inc(a[i-1]);\r
69         inc(carries);\r
70         end;\r
71       end;\r
72     escribir();\r
73     leer();\r
74     end;\r
75 end.\r